import 'dart:io';

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:rwini_edit/config/config.dart';
import 'package:rwini_edit/config/rwscript_zh.dart';
import 'package:rwini_edit/impl/paser_ini.dart';
import 'package:rwini_edit/view/home/RawiniPage.dart';
import 'package:rwini_edit/view/popup/view.dart';

import 'logic.dart';

Widget buildRBox(HomeLogic logic) => Column(
      children: [
        Obx(() {
          var filename = "";
          if (Platform.isWindows) {
            filename = logic.nowFile.value.split("\\").last;
          } else {
            filename = logic.nowFile.value.split("/").last;
          }
          return Text(
            "当前修改：${filename}",
            textAlign: TextAlign.start,
            overflow: TextOverflow.clip,
            style: TextStyle(
              fontSize: conf.fontsise,
              color: logic.isnowFileSave.value ? Colors.black : Colors.redAccent,
              backgroundColor: Colors.white10,
            ),
          );
        }),
        Container(
          height: 60,
          color: Colors.black12,
          child: Row(
            children: [
              TextButton(
                onPressed: () async {
                  logic.isshowGUI.value = !logic.isshowGUI.value;
                },
                child: Obx(() {
                  return Text(
                    logic.isshowGUI.value ? "显示源码" : "显示UI",
                    style: TextStyle(
                      fontSize: conf.fontsise,
                    ),
                  );
                }),
              ),
              TextButton(
                onPressed: () => logic.saveIni(),
                child: Text(
                  "保存代码",
                  style: TextStyle(
                    fontSize: conf.fontsise,
                  ),
                ),
              ),
              TextButton(
                onPressed: () => logic.createCode(),
                child: Text(
                  "新建代码块Todo",
                  style: TextStyle(
                    fontSize: conf.fontsise,
                  ),
                ),
              ),
            ],
          ),
        ),
        // 右侧显示
        Expanded(
          child: Obx(() {
            if (logic.isshowGUI.value) {
              return buildListview(logic.inilist);
            } else {
              return RawiniPage(
                text: obj2inifile(logic.inilist),
              );
            }
            // return buildListview(logic.inilist);
          }),
        )
      ],
    );

buildListview(Map<String, List> hm) {
  final homelogin = HomeLogic();
  List slivelist = [];
  var ks = hm.keys;
  var num = 0;
  for (var k in ks) {
    // 键 是大类 写成小条
    homelogin.slivers.add(buildAppbar(rw2zh(k)));
    for (var i in hm[k]!) {
      // 内容写成列表
      slivelist.add(i);
    }
    homelogin.slivers.add(buildlist(slivelist));
    slivelist = [];
  }

  return CustomScrollView(
    controller: homelogin.scrollctrl,
    slivers: homelogin.slivers,
  );
  // Divider();
}

// 项目栏
Widget buildlist(List l) {
  final homelogic = HomeLogic();
  // List<Widget> lists = [];
  // for (var i in l) {
  //   var a = i as Map;
  //   lists.add(
  //     CupertinoTextField(
  //       style: const TextStyle(color: Colors.blue),
  //       prefix: Text(
  //         rw2zh(a.keys.first),
  //         overflow: TextOverflow.ellipsis,
  //       ),
  //       suffix: IconButton(
  //         onPressed: () async {
  //           var res = await getdialog(
  //             a[a.keys.first].toString(), // 数据
  //             rw2zh(a.keys.first).toString(), // 标题
  //           );
  //           if (res != null) {
  //             //
  //             // homelogic.inilist.
  //             print("开始前：${homelogic.inilist.values}");
  //             // updateNestedMapValue(homelogic.inilist, [a.keys.first], res);
  //             a[a.keys.first] = res;
  //             print("\n");
  //             print("开始后${homelogic.inilist}");
  //             print("res:$res");
  //           }
  //         },
  //         icon: const Icon(Icons.format_list_numbered),
  //       ),
  //     ),
  //   );
  // }

  // RxString prefixText = RxString("");

  return SliverList(
    // delegate: SliverChildListDelegate(lists),
    delegate: SliverChildBuilderDelegate(
      childCount: l.length,
      (_, index) {
        var a = l[index] as Map;
        RxBool reUi = RxBool(true);
        // print("${a.keys.first}\n${l[index]}");
        return Container(
          key: Key('unique_key_$index'),
          padding: const EdgeInsets.fromLTRB(5, 0, 0, 20),
          color: Colors.white60,
          child: Obx(() {
            return ListTile(
              leading: SizedBox(
                //     // todo 鼠标悬浮显示全部内容 【]
                width: conf.fontsise * 6,
                child: Text(
                  maxLines: 1,
                  rw2zh(a.keys.first),
                  overflow: TextOverflow.clip,
                  style: TextStyle(
                    color: Colors.black,
                    fontSize: conf.fontsise * 0.8,
                  ),
                ),
              ),
              title: Text(
                rw2zh(a[a.keys.first]),
                style: TextStyle(color: reUi.value ? Colors.blue : Colors.red),
              ),
              trailing: IconButton(
                onPressed: () async {
                  reUi.value = false;
                  String value = a.values.first;
                  // print("开始前：${value.replaceAll("\\n", "\n")}");
                  var res = await getdialog(
                    value.replaceAll("\\n", "\n"), // 数据
                    rw2zh(a.keys.first).toString(), // 标题
                  );
                  if (res != null) {
                    a[a.keys.first] = res;
                  }
                  reUi.value = true;
                },
                icon: Icon(
                  Icons.format_list_numbered,
                  size: conf.fontsise * 1.5,
                ),
              ),
            );
            // return CupertinoTextField(
            //   style: TextStyle(color: reUi.value ? Colors.blue : Colors.red),
            //   prefix: SizedBox(
            //     // todo 鼠标悬浮显示全部内容 【]
            //     width: 180,
            //     child: Text(
            //       maxLines: 1,
            //       rw2zh(a.keys.first),
            //       overflow: TextOverflow.clip,
            //     ),
            //   ),
            //   suffix: IconButton(
            //       onPressed: () async {
            //         // print("开始前：${homelogic.inilist.values}");
            //         var res = await getdialog(
            //           a[a.keys.first].toString(), // 数据
            //           rw2zh(a.keys.first).toString(), // 标题
            //         );
            //         if (res != null) {
            //           a[a.keys.first] = res;
            //           reUi.value = true;
            //         }
            //       },
            //       icon: const Icon(Icons.format_list_numbered)),
            //   placeholder: rw2zh(a[a.keys.first]),
            //   onChanged: (s) {
            //     reUi.value = false;
            //     // print("监听输入:$s");
            //     EasyDebounce.debounce('tag', const Duration(seconds: 2), () {
            //       if (s.isNotEmpty) {
            //         a[a.keys.first] = s;
            //         reUi.value = true;
            //       }
            //     });
            //   },
            //   // onSubmitted: (s) {
            //   //   print("提交:$s");
            //   // },
            // );
          }),
        );
      },
    ),
  );
}

// 标题栏
Widget buildAppbar(data) {
  final Homelogic = HomeLogic();
  return SliverAppBar(
    // 固定在头部
    pinned: false,
    // shadowColor: Colors.blue,
    backgroundColor: Colors.white70,
    // pinned: true,
    expandedHeight: 60,
    // centerTitle: true,
    // title: FlexibleSpaceBar(
    flexibleSpace: FlexibleSpaceBar(
      centerTitle: true,
      // background: ,
      // titlePadding: const EdgeInsets.fromLTRB(10, 0, 0, 10),
      title: TextButton(
        onPressed: () async {
          if (!data.toString().startsWith("#")) {
            print("可以修改$data");
            await getdialog(data.toString(), data.toString());
          }
          // Homelogic.scrollctrl.animateTo(
          //   0.0, // 滚动到顶部
          //   duration: const Duration(milliseconds: 300),
          //   curve: Curves.easeOut,
          // );
          // Homelogic.scrollctrl.jumpTo(0.0);
        },
        child: Text(
          data.toString(),
          style: TextStyle(color: Colors.blue),
          // textAlign: TextAlign.center,
        ),
      ),
    ),
  );
}
